package co.gov.medellin.ssti.sub.web.action;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import co.gov.medellin.ssti.sub.common.excepcion.SUBException;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.AtributosService;
import co.gov.medellin.ssti.sub.model.service.BeneficiarioService;
import co.gov.medellin.ssti.sub.model.service.BeneficioService;
import co.gov.medellin.ssti.sub.model.service.InterfazMELService;
import co.gov.medellin.ssti.sub.model.service.RenovarService;
import co.gov.medellin.ssti.sub.model.service.SedeService;
import co.gov.medellin.ssti.sub.model.service.SubprogramaService;
import co.gov.medellin.ssti.sub.model.vo.AtributoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.InterfazMELVO;
import co.gov.medellin.ssti.sub.model.vo.RenovarVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserVO;

@Component
public class IngresoDatosRenovarAction extends Action {
	@Autowired
	AtributosService atributosServiceImpl;
	@Autowired
	BeneficiarioService beneficiarioServiceImpl;
	@Autowired
	BeneficioService beneficioServiceImpl;
	@Autowired
	InterfazMELService interfazMELServiceImpl;
	@Autowired
	RenovarService renovarServiceImpl;
	@Autowired
	SedeService sedeServiceImpl;
	@Autowired
	SubprogramaService subprogramaServiceImpl;

	/**
	 * This is the main action called from the Struts framework.
	 * 
	 * @param mapping
	 *            The ActionMapping used to select this instance.
	 * @param form
	 *            The optional ActionForm bean for this request.
	 * @param request
	 *            The HTTP Request we are processing.
	 * @param response
	 *            The HTTP Response we are processing.
	 * @return
	 * @throws java.io.IOException
	 * @throws javax.servlet.ServletException
	 */
	@SuppressWarnings("unchecked")
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		SubprogramaVO codigosub = new SubprogramaVO();

		String strCodigoSubpro = request.getParameter("codBeneficio");
		codigosub.setCode(new Long(strCodigoSubpro));

		// Proceso para la auditoria
		String terminalAddress = request.getRemoteAddr();
		// String strTerminal = ("WEB=" + terminalAddress);
		Calendar c = Calendar.getInstance();
		// SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		// Fin del proceso

		HttpSession session = request.getSession();
		session.setAttribute("CodigoSubpro", strCodigoSubpro);
		session.removeAttribute("renovacion");
		session.removeAttribute("ListaAtributos");
		session.removeAttribute("DateBirth");
		session.setAttribute("renovacion", "renovar");
		BeneficiarioVO beneVO = new BeneficiarioVO();
		List<BeneficiarioVO> coPropBeneficiario = (List<BeneficiarioVO>) session
				.getAttribute("beneSelected");
		Long CodeSubPro = new Long(strCodigoSubpro);
		List<AtributoVO> lAtributos = new LinkedList<AtributoVO>();
		boolean validoGF = false;
		boolean respuesta = false;
		// Proceso para convertir los atributos que no tienen valores en la
		// lista
		try {
			int conversion = atributosServiceImpl
					.findAtributosValidarLista(new Long(strCodigoSubpro));
		} catch (DAOException e) {
			SUBException.logDebugError("", e);
		}
		// Fin del proceso
		// proceso para identificar si el beneficiario tiene grupo familiar
		beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
		Object obgrupo = (Object) beneVO.getGrupoFamiliarCode();

		// Proceso para identificar si el beneficio es para un grupo familiar
		try {
			validoGF = subprogramaServiceImpl
					.isSubprogramaParaGrupoFamiliar(CodeSubPro);
		} catch (DAOException e) {
			SUBException.logDebugError("", e);
		}
		// Fin del Proceso
		if (validoGF) {
			if (obgrupo != null) {

				try {
					List<BeneficiarioVO> coGrupoFami = (List<BeneficiarioVO>) beneficiarioServiceImpl
							.findGrupoFamiliar(beneVO);

					int tamagf = coGrupoFami.size();
					for (int k = 0; k < tamagf; k++) {
						if (!respuesta) {
							BeneficiarioVO bene1VO = new BeneficiarioVO();
							bene1VO = (BeneficiarioVO) coGrupoFami.get(k);
							Long codebeneficiario = bene1VO.getCode();

							respuesta = beneficiarioServiceImpl
									.isBeneficiarioSubprograma(
											codebeneficiario, CodeSubPro);

						}
					}
				} catch (DAOException e) {
					SUBException.logDebugError("", e);
				}
			}
		}
		// fin del proceso

		if (!respuesta) {
			UserVO user = (UserVO) session.getAttribute("userInfo");
			// String strCodigoUsuario = user.getCode().toString();

			Collection<AtributoVO> atributos = null;
			Collection Csedes = null;

			String strCodigoBeneficiario = request.getParameter("code");
			session.setAttribute("beneficiario", strCodigoBeneficiario);
			List<SubprogramaVO> lNom = (List<SubprogramaVO>) subprogramaServiceImpl
					.findSubprogramaByCriteria(codigosub, user.getCode(),
							user.getUserGroupName(), user.getCodeArea());

			codigosub = (SubprogramaVO) lNom.get(0);
			String strNombre = codigosub.getNombre();
			session.setAttribute("NombreSub", strNombre);

			atributos = atributosServiceImpl.findAtributosSubprograma(
					Long.valueOf(strCodigoSubpro), "A", 0);

			int tam = atributos.size();
			String strTamano = String.valueOf(tam);

			session.setAttribute("tamanoLista", strTamano);
			session.setAttribute("ListaAtributos", atributos);

			Csedes = sedeServiceImpl.findTotalSedebyUser(user.getCode(),
					new Long(strCodigoSubpro), user.getUserGroupName(),
					user.getCodeArea());

			if ((Object) Csedes != null) {
				if (Csedes.size() > 0)
					session.setAttribute("ListaSede", Csedes);
			}

			// Carlos interface Sisben

			try {
				SubprogramaVO subproVO = new SubprogramaVO();
				subproVO.setCode(new Long(strCodigoSubpro));

				List<SubprogramaVO> subpro = (List<SubprogramaVO>) subprogramaServiceImpl
						.findSubprogramaByCriteria(subproVO, user.getCode(),
								user.getUserGroupName(), user.getCodeArea());
				if (subpro != null && subpro.size() > 0) {
					subproVO = (SubprogramaVO) subpro.get(0);
					if (subproVO.getValidarSisben().equals("S")) {
						// Buscando el beneficiario en la bd del sisben
						beneVO = new BeneficiarioVO();
						beneVO.setCode(new Long(strCodigoBeneficiario));

						try {
							List<BeneficiarioVO> beneficiario = (List<BeneficiarioVO>) beneficiarioServiceImpl
									.findBeneficiarioByCriteria(beneVO, "");
							if (beneficiario != null && beneficiario.size() > 0) {
								beneVO = (BeneficiarioVO) beneficiario.get(0);
								BeneficiarioVO beneSisbenVO = new BeneficiarioVO();
								// empezando a buscar el beneficiario en
								// sisben por todos los criterios
								beneSisbenVO.setTipoDocumento(beneVO
										.getTipoDocumento());
								beneSisbenVO.setNumeroDocumento(beneVO
										.getNumeroDocumento());
								beneSisbenVO.setNombre1(beneVO.getNombre1());
								beneSisbenVO.setNombre2(beneVO.getNombre2());
								beneSisbenVO.setPrimerApellido(beneVO
										.getPrimerApellido());
								beneSisbenVO.setSegundoApellido(beneVO
										.getSegundoApellido());
								beneSisbenVO.setFechaNacimiento(beneVO
										.getFechaNacimiento());
								List<BeneficiarioVO> beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
										.findBeneficiarioSisben(beneSisbenVO);
								boolean encontro = false;
								if (beneficiarioSisben != null
										&& beneficiarioSisben.size() > 0) {
									encontro = true;
								} else {
									beneSisbenVO = new BeneficiarioVO();
									beneSisbenVO
											.setNombre1(beneVO.getNombre1());
									beneSisbenVO
											.setNombre2(beneVO.getNombre2());
									beneSisbenVO.setPrimerApellido(beneVO
											.getPrimerApellido());
									beneSisbenVO.setSegundoApellido(beneVO
											.getSegundoApellido());
									beneSisbenVO.setFechaNacimiento(beneVO
											.getFechaNacimiento());
									beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
											.findBeneficiarioSisben(beneSisbenVO);
									if (beneficiarioSisben != null
											&& beneficiarioSisben.size() > 0) {
										encontro = true;
									} else {
										beneSisbenVO = new BeneficiarioVO();
										beneSisbenVO.setNumeroDocumento(beneVO
												.getNumeroDocumento());
										beneSisbenVO.setNombre1(beneVO
												.getNombre1());
										beneSisbenVO.setNombre2(beneVO
												.getNombre2());
										beneSisbenVO.setPrimerApellido(beneVO
												.getPrimerApellido());
										beneSisbenVO.setSegundoApellido(beneVO
												.getSegundoApellido());
										beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
												.findBeneficiarioSisben(beneSisbenVO);
										if (beneficiarioSisben != null
												&& beneficiarioSisben.size() > 0) {
											encontro = true;
										} else {
											beneSisbenVO = new BeneficiarioVO();
											beneSisbenVO
													.setNumeroDocumento(beneVO
															.getNumeroDocumento());
											beneSisbenVO.setNombre1(beneVO
													.getNombre1());
											beneSisbenVO
													.setPrimerApellido(beneVO
															.getPrimerApellido());
											beneSisbenVO
													.setFechaNacimiento(beneVO
															.getFechaNacimiento());
											beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
													.findBeneficiarioSisben(beneSisbenVO);
											if (beneficiarioSisben != null
													&& beneficiarioSisben
															.size() > 0) {
												encontro = true;
											} else {
												beneSisbenVO = new BeneficiarioVO();
												beneSisbenVO
														.setNumeroDocumento(beneVO
																.getNumeroDocumento());
												beneSisbenVO.setNombre1(beneVO
														.getNombre1());
												beneSisbenVO
														.setPrimerApellido(beneVO
																.getPrimerApellido());
												beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
														.findBeneficiarioSisben(beneSisbenVO);
												if (beneficiarioSisben != null
														&& beneficiarioSisben
																.size() > 0) {
													encontro = true;
												} else {
													beneSisbenVO = new BeneficiarioVO();
													beneSisbenVO
															.setNumeroDocumento(beneVO
																	.getNumeroDocumento());
													beneSisbenVO
															.setNombre2(beneVO
																	.getNombre2());
													beneSisbenVO
															.setSegundoApellido(beneVO
																	.getSegundoApellido());
													beneSisbenVO
															.setFechaNacimiento(beneVO
																	.getFechaNacimiento());
													beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
															.findBeneficiarioSisben(beneSisbenVO);
													if (beneficiarioSisben != null
															&& beneficiarioSisben
																	.size() > 0) {
														encontro = true;
													} else {
														beneSisbenVO = new BeneficiarioVO();
														beneSisbenVO
																.setTipoDocumento(beneVO
																		.getTipoDocumento());
														beneSisbenVO
																.setNumeroDocumento(beneVO
																		.getNumeroDocumento());
														beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
																.findBeneficiarioSisben(beneSisbenVO);
														if (beneficiarioSisben != null
																&& beneficiarioSisben
																		.size() > 0) {
															encontro = true;
														}
													}
												}
											}
										}
									}
								}

								if (!encontro) {
									session.setAttribute(
											"msg",
											"El beneficiario no se encontro en Sisben por lo tanto no se le puede otorgar un beneficio que valide contra Sisben.");
									return mapping.findForward("verbeneficio");
								} else {
									if (beneficiarioSisben.size() == 1) {
										if (subpro != null && subpro.size() > 0) {
											subproVO = (SubprogramaVO) subpro
													.get(0);

											List<AtributoVO> atri = (List<AtributoVO>) atributos;
											if (atri != null && atri.size() > 0) {
												AtributoVO atributo = null;
												beneVO = (BeneficiarioVO) beneficiarioSisben
														.get(0);
												for (int i = 0; i < atri.size(); i++) {
													atributo = (AtributoVO) atri
															.get(i);

													if (atributo
															.getNombre()
															.equals("NIVEL SISBEN")) {
														request.setAttribute(
																"nivel",
																beneVO.getNivelSisben());
													}
													if (atributo.getNombre()
															.equals("PUNTAJE")) {
														request.setAttribute(
																"puntaje",
																beneVO.getPuntajeSisben());
													}
												}
											}
										}
									}
								}
							}

						} catch (DAOException e) {
							SUBException.logDebugError("", e);
						}
						// fin interfaz SISBEN
					}
				}

				// inicio interfaz MATRICULA EN LINEA

				if (subpro != null && subpro.size() > 0) {
					subproVO = (SubprogramaVO) subpro.get(0);
					if (subproVO.getValidarEstud().equals("S")) {
						beneVO = new BeneficiarioVO();
						beneVO.setCode(new Long(strCodigoBeneficiario));
						boolean encontro = false;
						try {
							List<BeneficiarioVO> beneficiario = (List<BeneficiarioVO>) beneficiarioServiceImpl
									.findBeneficiarioByCriteria(beneVO, "");
							if (beneficiario != null && beneficiario.size() > 0) {
								beneVO = (BeneficiarioVO) beneficiario.get(0);
								BeneficiarioVO beneMLVO = new BeneficiarioVO();
								// empezando a buscar el beneficiario en ML
								// por tipo y numero de documento
								beneMLVO.setTipoDocumento(beneVO
										.getTipoDocumento());
								beneMLVO.setNumeroDocumento(beneVO
										.getNumeroDocumento());
								List<BeneficiarioVO> beneficiarioMEL = (List<BeneficiarioVO>) beneficiarioServiceImpl
										.findBeneficiarioMEL(beneMLVO);

								if (beneficiarioMEL != null
										&& beneficiarioMEL.size() > 0) {
									encontro = true;

									List<InterfazMELVO> camposMEL = (List<InterfazMELVO>) interfazMELServiceImpl
											.findCamposGenericos(beneVO);
									if (camposMEL != null
											&& camposMEL.size() > 0) {
										List<AtributoVO> atri = (List<AtributoVO>) atributos;
										if (atri != null && atri.size() > 0) {
											AtributoVO atributo = null;
											InterfazMELVO MELVO = (InterfazMELVO) camposMEL
													.get(0);
											for (int i = 0; i < atri.size(); i++) {
												atributo = (AtributoVO) atri
														.get(i);
												if (atributo.getNombre()
														.equals("NOMBRE PADRE")) {
													request.setAttribute(
															"nompadre",
															MELVO.getNomPadre());
												}
												if (atributo.getNombre()
														.equals("CEDULA PADRE")) {
													request.setAttribute(
															"cedpadre",
															MELVO.getCedulaPadre());
												}
												if (atributo
														.getNombre()
														.equals("TELEFONO PADRE")) {
													request.setAttribute(
															"telpadre",
															MELVO.getTelPadre());
												}
												if (atributo.getNombre()
														.equals("NOMBRE MADRE")) {
													request.setAttribute(
															"nommadre",
															MELVO.getNomMadre());
												}
												if (atributo.getNombre()
														.equals("CEDULA MADRE")) {
													request.setAttribute(
															"cedmadre",
															MELVO.getCedulaMadre());
												}
												if (atributo
														.getNombre()
														.equals("TELEFONO MADRE")) {
													request.setAttribute(
															"telmadre",
															MELVO.getTelMadre());
												}
												if (atributo
														.getNombre()
														.equals("NOMBRE ACUDIENTE")) {
													request.setAttribute(
															"nomacu",
															MELVO.getNomAcu());
												}
												if (atributo
														.getNombre()
														.equals("CEDULA ACUDIENTE")) {
													request.setAttribute(
															"cedacu",
															MELVO.getCedulaAcu());
												}
												if (atributo
														.getNombre()
														.equals("TELEFONO ACUDIENTE")) {
													request.setAttribute(
															"telacu",
															MELVO.getTelAcu());
												}
												if (atributo
														.getNombre()
														.equals("INSTITUCION EDUCATIVA")) {
													request.setAttribute(
															"nominsti",
															MELVO.getNomInstitucion());
												}
												if (atributo
														.getNombre()
														.equals("DIRECCION INST. EDUCATIVA")) {
													request.setAttribute(
															"dirinsti",
															MELVO.getDirInstitucion());
												}
												if (atributo
														.getNombre()
														.equals("TELEFONO INST. EDUCATIVA")) {
													request.setAttribute(
															"telinsti",
															MELVO.getTelInstitucion());
												}
												if (atributo.getNombre()
														.equals("NOMBRE SEDE")) {
													request.setAttribute(
															"nomsede",
															MELVO.getNomSede());
												}
												if (atributo
														.getNombre()
														.equals("DIRECCION SEDE")) {
													request.setAttribute(
															"dirsede",
															MELVO.getDirSede());
												}
												if (atributo
														.getNombre()
														.equals("TELEFONO SEDE")) {
													request.setAttribute(
															"telsede",
															MELVO.getTelSede());
												}
												if (atributo.getNombre()
														.equals("GRADO")) {
													request.setAttribute(
															"grado",
															MELVO.getGrado());
												}
												if (atributo.getNombre()
														.equals("JORNADA")) {
													request.setAttribute(
															"jornada",
															MELVO.getJornada());
												}
												if (atributo
														.getNombre()
														.equals("NUCLEO EDUCATIVO")) {
													request.setAttribute(
															"nucleo",
															MELVO.getNucleo());
												}
											}
										}
									}

								}
							}

						} catch (DAOException e) {
							SUBException.logDebugError("", e);
						}

						if (!encontro) {
							session.setAttribute(
									"msg",
									"El beneficiario no se encontro en Matricula en Linea por lo tanto no se le puede otorgar un beneficio que valide contra Matricula en Linea.");
							return mapping.findForward("verbeneficio");
						}
					}
				}

				// fin interfaz MATRICULA EN LINEA

			} catch (DAOException e) {
				SUBException.logDebugError("", e);
			}

			// /////////////FIN INTERFACES///////////////////

			// Proceso para calcular la edad
			beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
			String strFechaNacimiento = beneVO.getFechaNacimiento();
			if (strFechaNacimiento != null && !strFechaNacimiento.equals("")) {
				AtributoVO objAtriVO = new AtributoVO();
				lAtributos = (List<AtributoVO>) atributos;
				if (atributos != null && atributos.size() != 0) {
					for (int i = 0; i < lAtributos.size(); i++) {
						objAtriVO = (AtributoVO) lAtributos.get(i);
						if ((objAtriVO.getDescripcion()).equals("EDAD")) {
							Calendar calendario = Calendar.getInstance();
							String strFechaActual = (calendario
									.get(Calendar.DAY_OF_MONTH) < 10 ? "0" : "")
									+ calendario.get(Calendar.DAY_OF_MONTH)
									+ "/"
									+ ((calendario.get(Calendar.MONTH) + 1) < 10 ? "0"
											: "")
									+ (calendario.get(Calendar.MONTH) + 1)
									+ "/" + calendario.get(Calendar.YEAR);

							String ArrFechaActual[] = strFechaActual.split("/");
							String strDayAc = ArrFechaActual[0];
							String strMonthAc = ArrFechaActual[1];
							String strYearAc = ArrFechaActual[2];

							String ArrFechaNacimiento[] = ((String) beneVO
									.getFechaNacimiento()).split("/");
							String strDayNa = ArrFechaNacimiento[0];
							String strMonthNa = ArrFechaNacimiento[1];
							String strYearNa = ArrFechaNacimiento[2];

							// resto los a�os de las dos fechas
							int iEdad = Integer.parseInt(strYearAc)
									- Integer.parseInt(strYearNa) - 1; // -1
																		// porque
																		// no
																		// se
																		// si
																		// ha
																		// cumplido
																		// a�os
																		// ya
																		// este
																		// a�o

							// si resto los meses y me da menor que 0
							// entonces no ha cumplido a�os. Si da mayor
							// si ha cumplido
							if (((Integer.parseInt(strMonthAc)) - (Integer
									.parseInt(strMonthNa))) > 0)
								iEdad += 1;

							if (((Integer.parseInt(strMonthAc)) - (Integer
									.parseInt(strMonthNa))) == 0) {
								// si resto los dias y me da menor que 0
								// entonces no ha cumplido a�os. Si da
								// mayor o igual si ha cumplido
								if (((Integer.parseInt(strDayAc)) - (Integer
										.parseInt(strDayNa))) >= 0)
									iEdad += 1;
							}

							request.setAttribute("Edad", String.valueOf(iEdad));
							session.setAttribute("DateBirth",
									(String) beneVO.getFechaNacimiento());
						}
					}

				}
			}
			// Fin del proceso

			// proceso que traer el resto de la informacion

			List<AtributoVO> latributos = (List<AtributoVO>) renovarServiceImpl
					.findAtributosSubpro(new Long(strCodigoSubpro));
			List<RenovarVO> lResultados = new LinkedList<RenovarVO>();
			List<String> lBotSede = (List<String>) renovarServiceImpl
					.findBeneficioOtorgado(new Long(strCodigoSubpro), new Long(
							strCodigoBeneficiario));
			session.setAttribute("codesede", (String) lBotSede.get(1));

			for (int i = 0; i < latributos.size(); i++) {
				AtributoVO atrivo = new AtributoVO();
				atrivo = (AtributoVO) latributos.get(i);
				if (atrivo.getTipoatributo().equals("R")) {
					String strValor = renovarServiceImpl.findBeneficiarioAtri(
							atrivo.getTipodato(), new Long(
									strCodigoBeneficiario),
							new Long(atrivo.getCodatributo()));
					RenovarVO renovarvo = new RenovarVO();
					if (strValor != null && !strValor.equals("")) {
						renovarvo.setNombre(atrivo.getNombre());
						renovarvo.setValor(strValor);
						renovarvo.setTipoatributo(atrivo.getTipoatributo());
						lResultados.add(renovarvo);
						renovarvo = null;
					} else {
						renovarvo.setNombre(atrivo.getNombre());
						renovarvo.setValor("");
						renovarvo.setTipoatributo(atrivo.getTipoatributo());
						lResultados.add(renovarvo);
						renovarvo = null;
					}
				} else {
					if (lBotSede.size() > 0) {
						String strBeneOtor = (String) lBotSede.get(0);
						/*
						 * ResultSet rst = renovarService.findBeneficioAtri(
						 * atrivo.getTipodato(), new Long(strBeneOtor), new
						 * Long(atrivo.getCodatributo()));
						 */

						RenovarVO renovarvo = renovarServiceImpl
								.findBeneficioAtri(atrivo.getTipodato(),
										new Long(strBeneOtor),
										new Long(atrivo.getCodatributo()));
						if (renovarvo != null) {
							RenovarVO vo = new RenovarVO();
							vo.setNombre(atrivo.getNombre());
							vo.setValor(renovarvo.getValor());
							vo.setTipoatributo(atrivo.getTipoatributo());
							lResultados.add(vo);
						} else {
							RenovarVO vo = new RenovarVO();
							vo.setNombre(atrivo.getNombre());
							vo.setValor("");
							vo.setTipoatributo(atrivo.getTipoatributo());
							lResultados.add(vo);
						}
					}
				}
			}
			session.setAttribute("listaresultados", lResultados);
			// fin del proceso

			// Proceso para obtener el valor del beneficio
			String strCostBene = null;

			strCostBene = beneficioServiceImpl.findCostoBeneficio(new Long(
					strCodigoSubpro));
			if (strCostBene != null) {
				request.setAttribute("CostBene", strCostBene);
			}
			// Fin del proceso
			// Proceso para obtener la fecha del sistema
			SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd/MM/yyyy");
			String strDate = dateFormat2.format(c.getTime());
			request.setAttribute("DateBene", strDate);
			// Fin del proceso

			return mapping.findForward("success");
		} else {
			session.setAttribute("msg1",
					"El beneficio ya se le dio a un miembro del grupo familiar");
			return mapping.findForward("verbeneficio");
		}
	}
}